import axios from 'axios'
import { Toast, Notify } from 'vant'

const http = function (confing) {
  // 创建一个 axios 对象
  const instance = axios.create({
    // withCredentials: true,
    // 请求时间
    // timeout: 5000
  })
  // 请求拦截器
  instance.interceptors.request.use(request => {
    // 显示加载动画
    Toast.loading({
      message: '加载中...',
      forbidClick: true
    })
    // request.headers.Authorization = sessionStorage.getItem('token')
    return request
  })
  // 响应拦截器
  instance.interceptors.response.use(response => {
    Toast.clear()// 隐藏动画
    return response.data
  }, error => {
    const {
      response
    } = error
    // 服务器返回结果
    if (response) {
      switch (response.status) {
        case 401: //= >权限
          break
        case 403: //= >服务器拒绝执行（token过期）
          break
        case 404: //= >找不到页面
          Notify({ type: 'warning', message: '找不到页面' })
          break
      }
    } else {
      //= >服务器连结果都没有返回
      if (!window.navigator.onLine) {
        // 断网处理：可以跳转到断网页面
        return Notify({ type: 'danger', message: '您的网络已断开！' })
      }
      return Promise.reject(error)
    }
  })
  // 根据环境变量区分接口的默认地址
  switch (process.env.NODE_ENV) {
    case 'production':
      instance.defaults.baseURL = 'http://localhost:3000'
      break
    default:
      instance.defaults.baseURL = 'http://localhost:3000'
  }
  instance.defaults.withCredentials = true
  // axios.defaults.withCredentials = true
  // 返回 实例对象
  return instance(confing)
}
export default http
// axios.defaults.withCredentials = true
// axios.defaults.baseURL = 'http://localhost:7000'

// export default axios
